package com.innovations.inn.service.impl;

import com.innovations.common.utils.DateUtils;
import com.innovations.common.utils.StringUtils;
import com.innovations.common.utils.uuid.IdGeneratorSnowflake;
import com.innovations.inn.domain.ValueSet;
import com.innovations.inn.domain.request.RequestValueSetInfo;
import com.innovations.inn.mapper.ValueSetMapper;
import com.innovations.inn.service.IValueSetService;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 字典明细Service业务层处理
 *
 * @author dp
 * @date 2024-11-01
 */
@Service
public class ValueSetServiceImpl implements IValueSetService {
    @Autowired
    ValueSetMapper valueSetMapper;
    @Autowired
    IdGeneratorSnowflake idGeneratorSnowflake;

    /**
     * 查询字典明细
     *
     * @param valueId 字典明细主键
     * @return 字典明细
     */
    @Override
    public ValueSet selectValueSetByValueId(Long valueId) {
        return valueSetMapper.selectValueSetByValueId(valueId);
    }

    /**
     * 查询字典明细列表
     *
     * @param valueSet 字典明细
     * @return 字典明细
     */
    @Override
    public List<ValueSet> selectValueSetList(ValueSet valueSet) {
        return valueSetMapper.selectValueSetList(valueSet);
    }

    /**
     * 新增字典明细
     *
     * @param valueSet 字典明细
     * @return 结果
     */
    @Override
    public int insertValueSet(ValueSet valueSet) {
        return valueSetMapper.insertValueSet(valueSet);
    }

    /**
     * 修改字典明细
     *
     * @param valueSet 字典明细
     * @return 结果
     */
    @Override
    public int updateValueSet(ValueSet valueSet) {
        return valueSetMapper.updateValueSet(valueSet);
    }

    /**
     * 批量删除字典明细
     *
     * @param valueIds 需要删除的字典明细主键
     * @return 结果
     */
    @Override
    public int deleteValueSetByValueIds(Long[] valueIds) {
        return valueSetMapper.deleteValueSetByValueIds(valueIds);
    }

    /**
     * 删除字典明细信息
     *
     * @param valueId 字典明细主键
     * @return 结果
     */
    @Override
    public int deleteValueSetByValueId(Long valueId) {
        return valueSetMapper.deleteValueSetByValueId(valueId);
    }

    /**
     * 实体数据补全
     *
     * @param valueSet  实体
     * @param userId    用户id
     * @param crateType 创建类型 1：新增 2：修改
     */
    @Override
    public void completeData(ValueSet valueSet, Long userId, Integer crateType) {
        // 标识
        if (valueSet.getValueId() == null || "".equals(valueSet.getValueId())) {
            valueSet.setValueId(idGeneratorSnowflake.nextId());
        }
        if (valueSet.getPinyin() == null || valueSet.getPinyin().isEmpty()) {
            valueSet.setPinyin(StringUtils.getSpellInitial(valueSet.getValueDesc()));
        }
        // 创建模式
        if (crateType == 1) {
            // 创建人、创建时间
            valueSet.setCreatedAt(DateUtils.getNowDate());
        }
        // 修改模式
        else if (crateType == 2) {

        }
    }

    /**
     * 根据字典类型查询字典数据
     *
     * @param requestValueSetInfo 字典明细扩展
     * @return 字典数据
     */
    @Override
    public List<RequestValueSetInfo> selectValueSetInfo(RequestValueSetInfo requestValueSetInfo) {
        return valueSetMapper.selectValueSetInfo(requestValueSetInfo);
    }

    /**
     * 根据字典类型查询字典数据
     *
     * @param codeSystemNo 字典编号
     * @param valueDesc    字典明细描述
     * @return 字典数据
     */
    @Override
    public Long selectValueBySystemNoAndDesc(String codeSystemNo, String valueDesc) {
        RequestValueSetInfo requestValueSetInfo = new RequestValueSetInfo();
        requestValueSetInfo.setCodeSystemNo(codeSystemNo);
        requestValueSetInfo.setValueDesc(valueDesc);
        List<RequestValueSetInfo> valueSetList = valueSetMapper.selectValueSetInfo(requestValueSetInfo);
        if (valueSetList == null || valueSetList.isEmpty()) {
            return null;
        } else {
            return valueSetList.get(0).getValueId();
        }
    }

}
